package vashion.azeroth.core.service;

import vashion.azeroth.core.personal.pojo.PersonalFeed;
import vashion.azeroth.core.personal.pojo.PersonalPublishFiles;
import vashion.azeroth.core.result.ApiResult;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public interface PersonalPublishFilesService<T> {

	ApiResult<ArrayList<PersonalPublishFiles>> addFile(PersonalPublishFiles publishFiles);

	List<PersonalPublishFiles> find(PersonalPublishFiles publishFiles);

	ApiResult<ArrayList<PersonalPublishFiles>> getMyFiles(
			PersonalPublishFiles files, Integer totalCounts);

	int findCnt(PersonalPublishFiles files);

	int findCntTimeStamp(PersonalPublishFiles files);

	int findCntChosen(PersonalPublishFiles files);
	
	int findCntTags(PersonalPublishFiles files);
	
	Integer findCntMembers(PersonalPublishFiles files);
	
	ApiResult<ArrayList<PersonalFeed>> getFilesByTimeStamp(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<ArrayList<PersonalFeed>> getFilesByFollower(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<ArrayList<PersonalFeed>> getFilesByChosen(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<ArrayList<PersonalFeed>> getFilesByTags(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<ArrayList<PersonalFeed>> getFilesById(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<ArrayList<PersonalFeed>> getFilesBymemberId(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<Boolean> updateFeedsForChosen(
			PersonalPublishFiles files, Integer totalCounts);

	ApiResult<Boolean> deleteFeedsByPublishFileId(PersonalPublishFiles files,
			Integer totalCounts, Long actionMemberId);

	ApiResult<Boolean> restoreFeedsByPublishFileId(PersonalPublishFiles files,
			Integer totalCounts);

	ApiResult<Integer> queryFeedStatus(PersonalPublishFiles files,
			Integer totalCounts);

	ApiResult<Map<Integer, PersonalPublishFiles>> getFeedIdByTags(PersonalPublishFiles files,
																  Integer totalCounts);

	ApiResult<ArrayList<Integer>> getItemIdByFeedId(PersonalPublishFiles files,
			Integer totalCounts);

	Integer cntFilesByMyFollowUser(PersonalPublishFiles files);




	
}
